package day12.file;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;

/*本类用来测试文件类 File*/
public class TestFile {
    public static void main(String[] args) throws IOException {
        //1.创建File文件对象
        /*1.构造函数的参数是String类型的pathname(路径名)
        * 这个路径可以是文件路径,也可以是文件夹路径*/
        /*2.\在代码中有特殊的意义,所以想要真正表示这是一个\,需要用\进行转义*/
        //注意:此处需要自己手动在D盘创建对应目录下的1.txt,并添加内容
        //注意:创建1.txt时,需要设置系统显示文件后缀名,如果没设置,文件名应该是1
        //注意:File需要导包:import java.io.File;
        File file = new File("D:\\ready\\1.txt");

        //2.测试常用方法
        //2.1文件与文件夹属性测试
        System.out.println(file.length());//12,获取指定文件的字节量大小
        System.out.println(file.exists());//true,判断指定文件是否存在
        System.out.println(file.isFile());//true,判断指定内容是否为文件
        System.out.println(file.isDirectory());//false,判断指定内容是否为文件夹
        System.out.println(file.getName());//1.txt,获取指定内容的名字
        System.out.println(file.getParent());//D:\ready,获取指定内容的上级
        System.out.println(file.getAbsolutePath());//D:\ready\1.txt,获取指定内容的绝对路径

        //2.2创建与删除
        file = new File("D:\\ready\\2.txt");
        /*如果指定创建文件的文件夹不存在,会报错:java.io.IOException
        * 系统找不到指定的路径,由于可能会发生异常,所以调用时需要抛出异常 */
        //在windows中创建不存在的文件2.txt,成功返回true
        System.out.println(file.createNewFile());//true

        file = new File("D:\\ready\\m");
        System.out.println(file.mkdir());//true,创建不存在的单层文件夹m
        file = new File("D:\\ready\\a\\b\\c");
        System.out.println(file.mkdirs());//true,创建不存在的多层文件夹a/b/c

        System.out.println(file.delete());//c被删除,删除文件或者空文件夹
        file  = new File("D:\\ready\\a");
        System.out.println(file.delete());//false,因为a目录里还有b目录
        file  = new File("D:\\ready\\2.txt");
        System.out.println(file.delete());//true,删除2.txt文件成功

        //2.3 文件列表测试
        file = new File("D:\\ready");
        String[] listName = file.list();
        System.out.println(Arrays.toString(listName));

        File[] fs = file.listFiles();
        System.out.println(Arrays.toString(fs));
        System.out.println(fs[0].length());

    }
}
